iT邦幫忙

1

讓API 返回 Kafka- producer.send 事件 use Promise

  • 分享至 

  • xImage
  •  

這邊使用的是nodejs(egg)
一張圖簡介一下 ELK+kafka做什麼用 (用於數據分析,log分析)
kafka 用做數據寫入前的緩衝佇列
ES 數據最後寫入的資料庫
kibana 視覺呈現數據
logstash 解析log格式轉換
https://i.imgur.com/xaSVX2k.png

1.Kafka 連接

        const client = new Kafka.KafkaClient({kafkaHost: this.app.config.kafka.host}); 
        const producer = new Kafka.Producer(client);

2.原本 等待連接 producer.on('ready'
後發送訊息 producer.send(payloads

         producer.on('ready', function () {
                producer.send(payloads, function (err, data) {

3.這邊讓 API可以回應 做一個 Promise 等待
其他事件同樣道理實作

    other_fun(){
      let r = await this.kibana_ready(producer,payloads,query);
      this.ctx.body = this.ctx.helper.res(r);
    }
    
    async kibana_ready(producer,payloads,query){
        return new Promise(function(resolve, reject) {
        producer.on('ready', function () {
                producer.send(payloads, function (err, data) {
                    let result = {};
                    return resolve(result);
                });  
        });
    });
    }

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言